package com.student.utils;

import com.student.view.ManageView;

import javax.swing.*;
import java.sql.*;

/**
 * 封装查询方式
 */
public class DBMysql {
    private static Connection con = DBUntil.con;

    //实现查询
    public static ResultSet query(String sql, String... data) {
        try {
            PreparedStatement pstmt = con.prepareStatement(sql);
            for (int i = 0; i < data.length; i++) {
                pstmt.setString(i + 1, data[i]);
            }
            ResultSet resultSet = pstmt.executeQuery();//将集合结果返回
            if (!resultSet.next()){
                JOptionPane.showMessageDialog(
                        null,       // 父组件，null表示使用默认的顶级窗口作为父组件
                        "查询失败", // 显示的消息
                        "提示",     // 对话框的标题
                        JOptionPane.INFORMATION_MESSAGE // 消息类型，这里使用信息图标
                );
                return null;
            }

            return resultSet;
        } catch (SQLException e) {
            return null;
        }
    }

    //实现更新
    public static int update(String sql, String... data) {
        try {
            PreparedStatement pstmt = con.prepareStatement(sql);
            for (int i = 0; i < data.length; i++) {
                pstmt.setString(i + 1, data[i]);
            }
            return pstmt.executeUpdate();//将集合结果返回
        } catch (SQLException e) {
            return -1;
        }

    }


    //实现添加
    public static int insert(String sql, String... data) {
        try {
            PreparedStatement pstmt = con.prepareStatement(sql);
            for (int i = 0; i < data.length; i++) {
                pstmt.setString(i + 1, data[i]);
            }
            return pstmt.executeUpdate(); // 将影响的行数返回
        } catch (SQLException e) {

            if (e.getErrorCode() == 1062 || "23505".equals(e.getSQLState())) {
                JOptionPane.showMessageDialog(null, "添加失败，学号已存在", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                e.getErrorCode();
                JOptionPane.showMessageDialog(null, "数据库操作异常：" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
            }
            return -1;// 返回-1表示操作失败
        }


    }

    //实现删除
    public static int delete(String sql, String data) {
        //查找数据库看是否存在使用query方法
        if (query("select * from s_student where number=?", data)==null) {
        } else {
            try {
                PreparedStatement pstmt = con.prepareStatement(sql);//预处理sql语句

                    pstmt.setString(1, data);

                return pstmt.executeUpdate(); // 将影响的行数返回
            } catch (SQLException e) {

            }
        }return -1;// 返回-1表示操作失败
    }
}




